home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
526-550
/
disk_540
/
patchreq
/
patchreq.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
2KB
|
74 lines
/*
* PatchReq.c - Copyright © 1991 by Devil's child.
*
* Created: 25 Jan 1991 19:44:11
* Modified: 25 Jul 1991 19:15:27
*
* Make>> cc -qf -ps -so -sb -wu -wd -wp -md -hi ram:small.sym <file>.c
* Make>> ln -m <file>.o -larpsc
*/
#include <dos_functions.h>
#include <arpdos_pragmas.h>
extern struct ArpBase *ArpBase;
extern int _argc;
extern char **_argv;
#define DIR_CACHE 1
#define NOAUTOREQ 2
void main(int argc, char *argv[])
{
struct ReqLib *ReqBase;
PVF *FuncTab;
long (*OldTextRequest)();
long (*OldAutoRequest)();
BPTR Segment;
PVF *(*Setup)(struct ArpBase *, struct ReqLib *, long (*)(), long (*)(), short);
short Flags = 0;
if (!(ReqBase = (struct ReqLib *)OpenLibrary("req.library", 1))) {
Printf("You need req.library\n");
ArpExit(20,0);
}
if ((Segment = LoadSeg("PatchReq-Seg")) || (Segment = LoadSeg("L:PatchReq-Seg"))) {
Printf("
PatchReq
V1.4 Copyright © 1991 by P.C.\nArp FileRequest() Patched.\n");
if (argv[1])
Flags |= NOAUTOREQ;
else
Printf("AutoRequest() Patched.\n");
if (argv[0]) {
Flags |= DIR_CACHE;
Printf("Directory cache on.\n");
}
Setup = (PVF *(*)())((Segment << 2) + 4);
Forbid();
OldTextRequest = (long (*)())SetFunction((struct Library *)ReqBase, -0xAE, NULL); /* Get Old function to give to Setup() */
OldAutoRequest = (long (*)())SetFunction((struct Library *)ReqBase->IntuiLib, -0x15C, NULL); /* Get Old function to give to Setup() */
FuncTab = Setup(ArpBase, ReqBase, OldTextRequest, OldAutoRequest, Flags);
SetFunction((struct Library *)ReqBase->IntuiLib, -0x15C, FuncTab[0]); /* NewAutoRequest() */
SetFunction((struct Library *)ReqBase, -0xAE, FuncTab[1]); /* NewTextRequest() */
SetFunction((struct Library *)ArpBase, -0x126, FuncTab[2]); /* NewFileRequest() */
Permit();
}
else {
Printf("Couldn't load PatchReq-Seg\n");
ArpExit(20,0);
}
}
void _cli_parse(struct Process *pp, long alen, char *aptr)
{
_argv = ArpAlloc(12);
_argc = (int)GADS(aptr, alen, "Usage: PatchReq [CACHE] [NOAUTOREQ]", _argv, "CACHE/s,NOAUTOREQ/s");
if (_argc < 0) {
Puts(_argv[0]);
ArpExit(20L, ERROR_LINE_TOO_LONG);
}
}